const express = require('express');
const fs = require('fs');
const router = express.Router();
const multer = require('multer');

let uploadFileName = 'public/my-uploads';

// 确保 上传文件夹是存在的
if (fs.existsSync(uploadFileName)) { // 判断当前文件夹是否存在
  console.log('当前上传文件夹存在的，不需要创建了');
} else {
  console.log('不存在文件夹');
  fs.mkdirSync(uploadFileName);
}

const storage = multer.diskStorage({
  // 配置上传文件存储位置，必须保证该文件夹存在
  destination: function (req, file, cb) {
    cb(null, uploadFileName)
  },
  // 定义上传文件的文件名
  filename: function (req, file, cb) {
    console.log('原文件：', file);
    const fileArr = file.originalname.split('.');
    const exc = fileArr[fileArr.length - 1];
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
    cb(null, file.fieldname + '-' + uniqueSuffix + '.' + exc);
  }
});

const upload = multer({ storage: storage });

/* 单图上传 */
router.post('/avator', upload.single('avator'), function (req, res) {
  console.log('上传文件时传递的其他文本信息：', req.body);
  console.log('上传文件成功后文件信息：', req.file);

  const fileUrl = '127.0.0.1:3000/my-uploads/' + req.file.filename;

  res.json({
    msg: '成功',
    data: {
      url: fileUrl
    }
  });
});

/* 多图上传 */
router.post('/mul', upload.array('mul'), function (req, res) {
  console.log('上传文件成功后文件信息：', req.files);

  res.json({
    msg: '成功'
  });
});


// 接受前端传递的裁剪之后的图片数据：base 64
router.post('/cut', function (req, res) {
  let base64Data = req.body.uploadData.replace(/^data:image\/\w+;base64,/, '');

  //  读取数据转为二进制数据
  let bufferData = Buffer.from(base64Data, 'base64');

  let fileName = Date.now() + '-' + Math.round(Math.random() * 1E9) + '.png';

  fs.writeFile('public/cut/' + fileName, bufferData, function (err) {
    if (err) {
      res.json({
        msg: '上传失败',
        err
      });
    } else {
      res.json({
        msg: '上传成功'
      });
    }
  })
})

module.exports = router;
